"""
======================
Author: 柠檬班-小简
Time: 2022/11/9 20:23
Project: day12_framwork_V9
Company: 湖南零檬信息技术有限公司
======================
"""
"""
1、数据库按条件查出来的条数，是否符合期望？？
2、数字库按条件查出来的某些字段值，是否符合期望？？

"""
from tools.my_mysql import HandleMySql
from setttings import shop_mysql

# hy = HandleMySql(**shop_mysql)
#
#
# sql = 'SELECT * FROM tz_user WHERE user_mobile="15620529727" AND user_name="15620529727"'
# # 查询出来的条数，是否为1
# expected = 1
# sql_type = "count"
#
# if sql_type == "count":
#     real_result = hy.get_query_result_count(sql)
#     print(real_result)
#     assert real_result == expected
#
# # 要查询什么字段是由测试用例设计者决定的。
# sql2 = 'SELECT user_name, nick_name FROM tz_user WHERE user_mobile="1562052972788"'
# expected = {"user_name": "15620529727", "nick_name": "15620529727"}  # key与sql语句的查询字段保持一致。如果有别名请注意用别名。
# sql_type = "content"
#
# if sql_type == "content":
#     real_result = hy.select_and_get_result(sql2)
#     print(real_result)
#     assert real_result == expected
#
#
# hy.close_db()



db_assert_list = [
    {"sql": 'SELECT * FROM tz_user WHERE user_mobile="15620529727" AND user_name="15620529727"',
                 "expected":1,
                 "sql_type":"count"},
    {"sql": 'SELECT user_name, nick_name FROM tz_user WHERE user_mobile="15620529727"',
                 "expected":{"user_name": "15620529727", "nick_name": "15620529727"},
                 "sql_type":"content"}]

hy = HandleMySql(**shop_mysql)

# 存储每一条断言的结果。
assert_db_result_list = []

for one_assert in db_assert_list:
    # 执行sql语句。根据sql_type调用不同的方法来执行。
    if one_assert.get("sql_type") == "count":
        # 如果sql语句执行之后没有内容，那么影响的行数就是0
        real_result = hy.get_query_result_count(one_assert.get("sql"))
        print(real_result)
    elif one_assert.get("sql_type") == "content":
        # 如果sql语句执行之后没有内容，那么结果就是None
        real_result = hy.select_and_get_result(one_assert.get("sql"))
        print(real_result)
    else:
        print("不支持count和content以外的类型，无法得到sql的实际结果。请检查是否写错了。那么实际结果设置为-1")
        real_result = "sql_type写错了，不是count或content"

    assert_db_result_list.append(real_result == one_assert.get("expected"))


# assert_db_result_list里面的值全是True,意味着每一条sql执行的实际结果都是与期望结果相符合的。
print(assert_db_result_list)
assert all(assert_db_result_list)
